package com.linkgie.galaxyframework.process;

import java.util.List;

/**
 * 流程节点图；
 * 
 * @author Hike
 *
 */
public interface ProcessNodeMap {

	/**
	 * 起始节点；
	 * 
	 * @return
	 */
	StartPoint getStartingPoint();
	
	/**
	 * 执行节点；
	 * <p>
	 * 
	 * 至少有 1 个结束节点；
	 * 
	 * @return
	 */
	List<ExecutionNode> getExecutionNodes();

	/**
	 * 结束节点；
	 * <p>
	 * 
	 * 至少有 1 个结束节点；
	 * 
	 * @return
	 */
	List<EndNode> getEndNodes();

	/**
	 * 所有节点；
	 * 
	 * @return
	 */
	List<ProcessNode> getTotalNodes();

	/**
	 * 针对终止信号的处理分支；
	 * 
	 * @return
	 */
	Termination getTermination();

	/**
	 * 返回指定 id 的节点；
	 * 
	 * @param id
	 * @return
	 */
	ProcessNode getNode(String id);


	/**
	 * 返回指定 id 的执行节点；
	 * 
	 * @param id
	 * @return
	 */
	ExecutionNode getExecutionNode(String id);
}
